Component({
  /**
   * 组件的属性列表
   */
  properties: {
    userInfo: {
      type: Object,
      value: {}
    },
    totalWordsLearned: {
      type: Number,
      value: 0
    },
    learningDays: {
      type: Number,
      value: 0
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    tempUserInfo: {
      avatar: '',
      nickname: ''
    }
  },

  /**
   * 组件的生命周期
   */
  lifetimes: {
    attached() {
      // 初始化tempUserInfo为userInfo的值
      if (this.properties.userInfo) {
        this.setData({
          tempUserInfo: {
            avatar: this.properties.userInfo.avatar || '',
            nickname: this.properties.userInfo.nickname || ''
          }
        });
      }
    }
  },
  
  /**
   * 监听属性变化
   */
  observers: {
    'userInfo': function(newUserInfo) {
      if (newUserInfo) {
        this.setData({
          tempUserInfo: {
            avatar: newUserInfo.avatar || '',
            nickname: newUserInfo.nickname || ''
          }
        });
      }
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 编辑昵称
     */
    editNickname() {
      const that = this;
      wx.showModal({
        title: '编辑昵称',
        value: that.data.userInfo.nickname || '',
        editable: true,
        success(res) {
          if (res.confirm && res.content.trim()) {
            that.triggerEvent('editnickname', {
              nickname: res.content.trim()
            });
          }
        }
      });
    },

    /**
     * 处理头像选择
     */
    onChooseAvatar(e) {
      const { avatarUrl: avatar } = e.detail;
      const that = this;

      wx.showLoading({
        title: '上传中...',
      });

      const app = getApp();
      const openid = app.globalData.openid;
      // 导入云管理器和云配置
      const cloudManager = app.globalData.cloudManager || app.getCloudManager();
      // 云存储路径应该使用相对路径，不包含cloud://前缀
      // 获取文件扩展名
      const ext = avatar.split('.').pop();
      // 构建相对路径：avatar/[openid].[ext]
      const cloudPath = `avatar/${openid}.${ext}`;
      
      // 上传头像到云存储
      cloudManager.uploadFile(avatar, cloudPath).then(res => {
        // 更新临时用户信息中的头像URL
        that.setData({
          'tempUserInfo.avatar': res.fileID
        });

        // 如果用户已经输入了昵称，自动提交
        if (that.data.tempUserInfo.nickname) {
          that.submitUserInfo();
        } else {
          wx.showToast({
            title: '头像已上传',
            icon: 'success'
          });
        }
      })
        .catch(err => {
          console.error('上传头像失败', err);
          wx.showToast({
            title: '上传失败，请重试',
            icon: 'none'
          });
        })
        .finally(() => {
          wx.hideLoading();
        });
    },

    /**
     * 处理昵称输入
     */
    onNicknameBlur(e) {
      const { value } = e.detail;
      this.setData({
        'tempUserInfo.nickname': value.trim()
      });

      // 如果用户已经选择了头像，自动提交
      if (this.data.tempUserInfo.avatar) {
        this.submitUserInfo();
      }
    },

    /**
     * 提交用户信息
     */
    submitUserInfo() {
      const { tempUserInfo } = this.data;

      // 验证输入
      if (!tempUserInfo.nickname) {
        wx.showToast({
          title: '请输入昵称',
          icon: 'none'
        });
        return;
      }

      // 构建完整的用户信息
      const userInfo = {
        nickname: tempUserInfo.nickname,
        avatar: tempUserInfo.avatar || '/images/default-avatar.png',
        gender: 0,
        country: '',
        province: '',
        city: '',
        authorized: true
      };

      // 触发事件，通知父组件
      this.triggerEvent('userinfoauthorized', { userInfo });
    },

    /**
     * 获取用户信息（兼容旧版本调用）
     */
    getUserProfile() {
      // 显示用户信息编辑界面
      // 实际操作由onChooseAvatar和onNicknameBlur处理
    }
  }
})